The use of client-server applications has risen dramatically in the past decades. One of the processes that is important for a wide class of client-server applications is asynchronous notification. Asynchronous notifications may be defined as communication from a server to a distributed client application. The client may be comprised of one or more of a plurality of client entities. A typical application of asynchronous notifications is the delivery of alarms to administrators in a network surveillance system. Mechanisms for handling asynchronous notifications in distributed systems can be classified as “push” or “pull” techniques.
A push mechanism sends new information to the client as soon as it is available on the server. Such a mechanism may be inadequate for supporting large numbers of clients in a Web based application because of the need to maintain persistent connections with each client. Push systems generally require the full client state to be maintained on the server side of the system, so that the server application has the information that it needs to push information to the clients.
A pull, or polling, mechanism involves the client periodically contacting the server to determine if any new information is available. The client polling setup is completely controlled by the client, and the polling rate must generally be established a priori to accommodate the worst possible scenario. The communications network bandwidth used by this pull mechanism is proportional to the number of clients. But because of the a priori establishment of poll rates, during periods of light workloads with a small number of clients, network resources are underutilized. Similarly, during periods of heavy workloads beyond the expected worst case scenario, network resources are overloaded by the client polling mechanism; this congestion leads to significant degradation of the service and potentially complete failure. Therefore, an inherent scalability constraint exists due to the limited traffic capacity of the network.
The present invention is directed to overcoming one or more of the problems identified above.